【Unity】第三人称:鼠标控制相机位置

您所在的位置:网站首页 鼠标 摄像头 【Unity】第三人称:鼠标控制相机位置

【Unity】第三人称:鼠标控制相机位置

2023-09-16 15:53| 来源: 网络整理| 查看: 265

1.新建项目并创建一个游戏对象

2.把一个相机作为子对象

3.创建一个脚本并添加到相机

4.写好脚本

5.添加要锁定的游戏对象的Transform

6.运行游戏

相机移动轨迹为无底面的圆柱

希望有大佬能优化成半球

如有错误请指正

----更新----

看了一下怪猎的视角,发现这样写有点反人类

应该改成

my1 -= Input.GetAxis("Mouse Y") ;

----更新----

研究了一下向量和四元数

更新代码比较多

using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraMove : MonoBehaviour { public Transform Cube;//注视的目标 private float m1;//鼠标上下移动 private float m2;//鼠标左右移动 private int x=0;//用于判断向量x轴的正负 private int mo = 5;//向量模长 private void Update() { Look(); } private void Look() { Vector3 c = (transform.position-Cube.position).normalized;//指向目标的单位向量 Vector3 cc;//垂直向量 if (c.z == 0) { cc= new Vector3(0, 0, -1); } else { cc= new Vector3(-c.z / c.x, 0, 1).normalized; } //判断向量x轴的正负 if (c.x > 0) { x = 1; } else { x = -1; } //限制向量y轴范围0~4 if ((c.y>0&&c.y*mo 0) { x = 1; } else { x = -1; } //限制向量y轴范围0~4 if ((c.y > 0 && c.y * mo < 4) || (c.y = 4 && Input.GetAxis("Mouse Y") > 0)) { m1 = -Input.GetAxis("Mouse Y") * x; } else { m1 = 0; } m2 = Input.GetAxis("Mouse X"); Quaternion q = Quaternion.AngleAxis(m2, Vector3.up);//鼠标左右移动控制绕 y轴 的旋转 q *= Quaternion.AngleAxis(m1, cc);//鼠标上下移动控制绕 与向量垂直的 轴旋转 transform.position = q * c * mo + Cube.position;//确定最终位置 transform.LookAt(Cube);//注视目标 } }

----更新----

修改45行:

if ((c.y > 0 && c.y < 0.8) || (c.y = 0.8 && Input.GetAxis("Mouse Y") > 0))



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3